#ifndef BASEDEDATOS_H_
#define BASEDEDATOS_H_

#include <map>
#include <string>
#include <list>
#include <iostream>
#include "Tabla.h"
#include <mensajes.h>

typedef  std::map<std::string,Tabla*> MapTablaType;

class BaseDeDatos {
private:
	std::map<std::string,Tabla*> tablas;
public:
	BaseDeDatos();
	virtual ~BaseDeDatos();

	/*
	 * abrir
	 * levanta en memoria la base o crea una nueva si no existe, si la base
	 *   ya esta en memoria no se crea.
	 * devuelve: 0 - si la base se creo correctamente
	 * 			-1 - si la base ya esta en memoria
	 * 			-2 - otro error
	 */
	int abrir();

	int cerrar();

	std::list<mensajes::RespuestaType> ejecutar(mensajes::ConsultaType consulta);
};

#endif /* BASEDEDATOS_H_ */
